home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / BGUI / Mousecycling_window.c < prev    next >
C/C++ Source or Header  |  1995-11-16  |  26KB  |  552 lines

  1. /************************************************************************
  2. **********************  BGUI MOUSECYCLING WINDOW  ***********************
  3. ************************************************************************/
  4.  
  5. #define __USE_SYSBASE
  6.  
  7. #include <exec/execbase.h>
  8. #include <exec/memory.h>
  9. #include <exec/types.h>
  10. #include <intuition/intuition.h>
  11. #include <intuition/classes.h>
  12. #include <intuition/classusr.h>
  13. #include <intuition/imageclass.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/bgui.h>
  16. #include <libraries/bgui_macros.h>
  17. #include <workbench/workbench.h>
  18. #include <proto/exec.h>
  19. #include <proto/dos.h>
  20. #include <proto/intuition.h>
  21. #include <proto/bgui.h>
  22. #include <proto/wb.h>
  23. #include <clib/alib_protos.h>
  24. #include <string.h>
  25. #include <stdlib.h>
  26.  
  27. #include "code.h"
  28. #include "version.h"
  29. #include "yak.h"
  30. #include "hotkey_types.h"
  31. #include "MouseCycling_Window.h"
  32. #include "KeyDef_Window.h"
  33. #include "gui.h"
  34. #include "Handlers.h"
  35. #include "Requesters.h"
  36.  
  37. #define CATCOMP_NUMBERS
  38. #include "yak_locale_strings.h"
  39.  
  40. /************************************************************************
  41. *****************************  REFERENCES  ******************************
  42. ************************************************************************/
  43.  
  44. IMPORT LONG (*HandleReturnID)(LONG ID);
  45.  
  46. IMPORT char *PrefsHelp;
  47.  
  48. /************************************************************************
  49. *****************************  LOCAL DATA  ******************************
  50. ************************************************************************/
  51.  
  52. struct Window   *MouseCyclingWnd = NULL;
  53. Object                  *MouseCyclingWndObj = NULL;
  54. Object                  *MouseCyclingObjects[MouseCycling_CNT];
  55. Object                  *WindowToFrontGroup,*WindowToBackGroup,*ScreenCyclingGroup;
  56. Object                  *MouseCyclingPageObj = NULL;
  57. Object                  *MouseCyclingTabsObj = NULL;
  58. UBYTE                   *MouseCyclingPageLabels[4];
  59. UBYTE                   *Click1Labels[4];
  60. struct IBox             MouseCyclingBox;
  61. BOOL                    MouseCyclingBoxValid = FALSE;
  62.  
  63. /************************************************************************
  64. *********************  CREATEMOUSECYCLINGWINDOW()  **********************
  65. *************************************************************************
  66. * Create the mousecycling window object tree. Returns the window object
  67. * ptr or NULL if create failed. Gadgets are initialised with default
  68. * values, InitMouseCyclingGadgets must be called after window opened to
  69. * reflect current settings.
  70. *
  71. *************************************************************************/
  72.  
  73. APTR CreateMouseCyclingWindow(void)
  74. {
  75. Object  *obj,*wtfpg,*wtbpg,*scrcycpg;
  76.  
  77. static struct TagItem MxToPageMap[] = {         /* update map between tabs */
  78.         MX_Active, PAGE_Active, TAG_DONE                /* gadget and page object */
  79. };
  80.  
  81. /* put localised strings into Clicks cycle gadget labels */
  82. Click1Labels[0] = getString(SIMPLE_CLICK_STRING);
  83. Click1Labels[1] = getString(DOUBLE_CLICK_STRING);
  84. Click1Labels[2] = getString(TRIPLE_CLICK_STRING);
  85. Click1Labels[3] = NULL;
  86.  
  87. /* put localised strings into MouseCycling page gadget labels */
  88. MouseCyclingPageLabels[0] = getString(WINDOW_TO_FRONT);
  89. MouseCyclingPageLabels[1] = getString(WINDOW_TO_BACK);
  90. MouseCyclingPageLabels[2] = getString(SCREENS_CYCLING);
  91. MouseCyclingPageLabels[3] = NULL;
  92.  
  93. /* Create Window To Front Page */
  94.  
  95. wtfpg = VGroupObject, Spacing(2),
  96.                 StartMember,
  97.                         CH_WinToFrontActive = CheckBoxObject,
  98.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  99.                                 LAB_Place,              PLACE_RIGHT,
  100.                                 GA_ID,                  GD_WindowToFrontActive,
  101.                                 ButtonFrame,
  102.                                 FRM_Flags,              FRF_EDGES_ONLY,
  103.                         EndObject, FixMinWidth,
  104.                 EndMember,
  105.                 VarSpace(DEFAULT_WEIGHT/10),
  106.                 StartMember,
  107.                         WindowToFrontGroup = VGroupObject, Spacing(2),
  108.                                 StartMember,
  109.                                         CH_ScrToFront = CheckBoxObject,
  110.                                                 LAB_Label,              getString(ScreenToFront_ACT),
  111.                                                 LAB_Place,              PLACE_RIGHT,
  112.                                                 GA_ID,                  GD_ScreenToFront_Check,
  113.                                                 ButtonFrame,
  114.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  115.                                         EndObject, FixMinWidth,
  116.                                 EndMember,
  117.                                 VarSpace(DEFAULT_WEIGHT/10),
  118.                                 StartMember,
  119.                                         CH_ExcludeWBWin = CheckBoxObject,
  120.                                                 LAB_Label,              getString(EXCLUDE_WB_WINDOW),
  121.                                                 LAB_Place,              PLACE_RIGHT,
  122.                                                 GA_ID,                  GD_ExcludeWbWindow,
  123.                                                 ButtonFrame,
  124.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  125.                                         EndObject, FixMinWidth,
  126.                                 EndMember,
  127.                                 VarSpace(DEFAULT_WEIGHT/10),
  128.                                 StartMember,
  129.                                         STR_WinToFrontPat = StringObject,
  130.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  131.                                                 RidgeFrame,
  132.                                                 STRINGA_MaxChars,256,
  133.                                                 STRINGA_MinCharsVisible,10,
  134.                                                 GA_ID,                  GD_WindowToFrontPattern,
  135.                                                 GA_TabCycle,    TRUE,
  136.                                         EndObject, NoAlign,
  137.                                 EndMember,
  138.                                 VarSpace(DEFAULT_WEIGHT/10),
  139.                                 StartMember,
  140.                                         HGroupObject, Spacing(2),
  141.                                                 StartMember,
  142.                                                         CYC_WinToFrontClicks = CycleObject,
  143.                                                                 GA_ID,                  GD_WindowToFrontClicks,
  144.                                                                 ButtonFrame,
  145.                                                                 CYC_Labels,             Click1Labels,
  146.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  147.                                                         EndObject,
  148.                                                 EndMember,
  149.                                                 StartMember,
  150.                                                         BT_HotkeyWinToFront = Button(
  151.                                                                         getString(DEFINITION_STRING),
  152.                                                                         GD_HotkeyWindowToFront),
  153.                                                 EndMember,
  154.                                         EndObject,
  155.                                 EndMember,
  156.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  157.                 EndMember,
  158.         EndObject;
  159.  
  160. /* Create Window To Back Page */
  161.  
  162. wtbpg = VGroupObject, Spacing(2),
  163.                 StartMember,
  164.                         CH_WinToBackActive = CheckBoxObject,
  165.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  166.                                 LAB_Place,              PLACE_RIGHT,
  167.                                 GA_ID,                  GD_WindowToBackActive,
  168.                                 ButtonFrame,
  169.                                 FRM_Flags,              FRF_EDGES_ONLY,
  170.                         EndObject, FixMinWidth,
  171.                 EndMember,
  172.                 VarSpace(DEFAULT_WEIGHT/10),
  173.                 StartMember,
  174.                         WindowToBackGroup = VGroupObject, Spacing(2),
  175.                                 VarSpace(DEFAULT_WEIGHT*11/10),
  176.                                 StartMember,
  177.                                         CH_ScrToBack = CheckBoxObject,
  178.                                                 LAB_Label,              getString(ScreenToBack_ACT),
  179.                                                 LAB_Place,              PLACE_RIGHT,
  180.                                                 GA_ID,                  GD_ScreenToBack_Check,
  181.                                                 ButtonFrame,
  182.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  183.                                         EndObject, FixMinWidth,
  184.                                 EndMember,
  185.                                 VarSpace(DEFAULT_WEIGHT/10),
  186.                                 StartMember,
  187.                                         STR_WinToBackPat = StringObject,
  188.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  189.                                                 RidgeFrame,
  190.                                                 STRINGA_MaxChars,256,
  191.                                                 STRINGA_MinCharsVisible,10,
  192.                                                 GA_ID,                  GD_WindowToBackPattern,
  193.                                                 GA_TabCycle,    TRUE,
  194.                                         EndObject, NoAlign,
  195.                                 EndMember,
  196.                                 VarSpace(DEFAULT_WEIGHT/10),
  197.                                 StartMember,
  198.                                         HGroupObject, Spacing(2),
  199.                                                 StartMember,
  200.                                                         CYC_WinToBackClicks = CycleObject,
  201.                                                                 GA_ID,                  GD_WindowToBackClicks,
  202.                                                                 ButtonFrame,
  203.                                                                 CYC_Labels,             Click1Labels,
  204.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  205.                                                         EndObject,
  206.                                                 EndMember,
  207.                                                 StartMember,
  208.                                                         BT_HotkeyWinToBack = Button(
  209.                                                                         getString(DEFINITION_STRING),
  210.                                                                         GD_HotkeyWindowToBack),
  211.                                                 EndMember,
  212.                                         EndObject,
  213.                                 EndMember,
  214.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  215.                 EndMember,
  216.         EndObject;
  217.  
  218. /* Create Screens Cycling Page */
  219.  
  220. scrcycpg = VGroupObject, Spacing(2),
  221.                 StartMember,
  222.                         CH_ScrCyclingActive = CheckBoxObject,
  223.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  224.                                 LAB_Place,              PLACE_RIGHT,
  225.                                 GA_ID,                  GD_ScreenCyclingActive,
  226.                                 ButtonFrame,
  227.                                 FRM_Flags,              FRF_EDGES_ONLY,
  228.                         EndObject, FixMinWidth,
  229.                 EndMember,
  230.                 VarSpace(DEFAULT_WEIGHT/10),
  231.                 StartMember,
  232.                         ScreenCyclingGroup = VGroupObject, Spacing(2),
  233.                                 VarSpace(DEFAULT_WEIGHT*22/10),
  234.                                 StartMember,
  235.                                         STR_ScrCyclingPat = StringObject,
  236.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  237.                                                 RidgeFrame,
  238.                                                 STRINGA_MaxChars,256,
  239.                                                 STRINGA_MinCharsVisible,10,
  240.                                                 GA_ID,                  GD_ScreenCyclingPattern,
  241.                                                 GA_TabCycle,    TRUE,
  242.                                         EndObject, NoAlign,
  243.                                 EndMember,
  244.                                 VarSpace(DEFAULT_WEIGHT/10),
  245.                                 StartMember,
  246.                                         HGroupObject, Spacing(2),
  247.                                                 StartMember,
  248.                                                         CYC_ScrCyclingClicks = CycleObject,
  249.                                                                 GA_ID,                  GD_ScreenCyclingClicks,
  250.                                                                 ButtonFrame,
  251.                                                                 CYC_Labels,             Click1Labels,
  252.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  253.                                                         EndObject,
  254.                                                 EndMember,
  255.                                                 StartMember,
  256.                                                         BT_HotkeyScrCycling = Button(
  257.                                                                         getString(DEFINITION_STRING),
  258.                                                                         GD_HotkeyScreenCycling),
  259.                                                 EndMember,
  260.                                         EndObject,
  261.                                 EndMember,
  262.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  263.                 EndMember,
  264.         EndObject;
  265.  
  266. obj = WindowObject,
  267.         WINDOW_PubScreenName, PubScreenName,
  268.         WINDOW_Title,           getString(MOUSECYCLING_STRING),
  269.         WINDOW_ScreenTitle,     getString(COPYRIGHT_STRING),
  270.         WINDOW_SmartRefresh, TRUE,
  271.         WINDOW_SizeBottom,      FALSE,                  /* put size gadget in right border */
  272.         WINDOW_SizeRight,       TRUE,
  273.         WINDOW_AutoAspect,      TRUE,                   /* automatic edges pixel width */
  274.         (MouseCyclingBoxValid ? WINDOW_Bounds : TAG_IGNORE), &MouseCyclingBox,
  275.         WINDOW_Position,        POS_CENTERMOUSE,
  276.         WINDOW_AppWindow,       TRUE,                   /* make it an appwindow */
  277.         WINDOW_RMBTrap,         TRUE,                   /* trap rmb - no menu */
  278.         WINDOW_CloseGadget,     FALSE,                  /* no windowclose gadget please */
  279.         (TextFont ? WINDOW_Font : TAG_IGNORE),  &Attr,  /* use font if specified */
  280.         WINDOW_HelpFile,        PrefsHelp,              /* online help system */
  281.         WINDOW_HelpNode,        "MouseCycling",
  282.         WINDOW_MasterGroup,
  283.                 VGroupObject, Spacing(4), HOffset(4), VOffset(4),
  284.                         StartMember,
  285.                                 MouseCyclingTabsObj = MxObject,
  286.                                         MX_TabsObject,          TRUE,
  287.                                         GA_ID,                          GD_Page_MCycling,
  288.                                         MX_Labels,                      MouseCyclingPageLabels,
  289.                                 EndObject,
  290.                         EndMember,
  291.                         StartMember,
  292.                                 HorizSeparator,
  293.                         EndMember,
  294.                         StartMember,
  295.                                 MouseCyclingPageObj = PageObject,
  296.                                         PageMember,             wtfpg,
  297.                                         PageMember,             wtbpg,
  298.                                         PageMember,             scrcycpg,
  299.                                 EndObject, Weight(DEFAULT_WEIGHT*5),
  300.                         EndMember,
  301.                         VarSpace(DEFAULT_WEIGHT/10),
  302.                         StartMember,
  303.                                 HorizSeparator,
  304.                         EndMember,
  305.                         StartMember,
  306.                                 HGroupObject,
  307.                                         VarSpace(DEFAULT_WEIGHT),
  308.                                         StartMember,
  309.                                                 BT_Return5 = Button(getString(OK_STRING),GD_Return5),
  310.                                         EndMember,
  311.                                         VarSpace(DEFAULT_WEIGHT),
  312.                                 EndObject,
  313.                         EndMember,
  314.                 EndObject,
  315.         EndObject;
  316.  
  317. if (obj)
  318.         {
  319.         /* add a notification map from page tabs gadget to page object */
  320.         AddMap(MouseCyclingTabsObj,MouseCyclingPageObj,MxToPageMap);
  321.  
  322.         /* add conditional map: disables WindowToFront */
  323.         /* group when CH_WinToFrontActive is unchecked */
  324.         AddCondit(CH_WinToFrontActive,WindowToFrontGroup,GA_Selected,TRUE,
  325.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  326.  
  327.         /* add conditional map: disables WindowToBack */
  328.         /* group when CH_WinToBackActive is unchecked */
  329.         AddCondit(CH_WinToBackActive,WindowToBackGroup,GA_Selected,TRUE,
  330.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  331.  
  332.         /* add conditional map: disables ScreenCycling */
  333.         /* group when CH_ScrCyclingActive is unchecked */
  334.         AddCondit(CH_ScrCyclingActive,ScreenCyclingGroup,GA_Selected,TRUE,
  335.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  336.         }
  337.  
  338. return(obj);
  339. }
  340.  
  341. /************************************************************************
  342. **********************  CLOSEMOUSECYCLINGWINDOW()  **********************
  343. *************************************************************************
  344. * Close the mousecycling window, disposing of the window object.
  345. *
  346. *************************************************************************/
  347.  
  348. void CloseMouseCyclingWindow(void)
  349. {
  350. if (MouseCyclingWnd)
  351.         {
  352.         GetAttr(WINDOW_Bounds,MouseCyclingWndObj,(ULONG *) &MouseCyclingBox);
  353.         MouseCyclingBoxValid = TRUE;
  354.         }
  355.  
  356. DisposeObject(MouseCyclingWndObj);
  357. MouseCyclingWndObj = NULL;
  358. MouseCyclingWnd = NULL;
  359. }
  360.  
  361. /************************************************************************
  362. *********************  INITMOUSECYCLINGGADGETS()  ***********************
  363. *************************************************************************
  364. * Initialize the mousecycling window gadgets to reflect current settings.
  365. *************************************************************************/
  366.  
  367. static void InitMouseCyclingGadgets(void)
  368. {
  369. /* Notification doesn't seem to enable/disable these groups initially */
  370. SetGadgetAttrs((struct Gadget *)WindowToFrontGroup, MouseCyclingWnd, NULL,
  371.                         GA_Disabled, !Window_To_Front.State, TAG_DONE);
  372. SetGadgetAttrs((struct Gadget *)WindowToBackGroup, MouseCyclingWnd, NULL,
  373.                         GA_Disabled, !Window_To_Back.State, TAG_DONE);
  374. SetGadgetAttrs((struct Gadget *)ScreenCyclingGroup, MouseCyclingWnd, NULL,
  375.                         GA_Disabled, !ScreenCycling.State, TAG_DONE);
  376.  
  377. InitWindowGadget(GDX_WindowToFrontActive,  GA_Selected, Window_To_Front.State, MCYCLING_WINDOW);
  378. InitWindowGadget(GDX_WindowToFrontClicks,  CYC_Active,  Window_To_Front.RequiredClicks-1, MCYCLING_WINDOW);
  379. InitWindowGadget(GDX_ScreenToFront_Check,  GA_Selected, Window_To_Front.Options & Opt_ScreenToFront, MCYCLING_WINDOW);
  380. InitWindowGadget(GDX_ExcludeWbWindow,      GA_Selected, Window_To_Front.Options & Opt_ExcludeWbWindow, MCYCLING_WINDOW);
  381. InitWindowGadget(GDX_WindowToFrontPattern, STRINGA_TextVal, (LONG)Window_To_Front.ScreenPatternData.patstr, MCYCLING_WINDOW);
  382.  
  383. InitWindowGadget(GDX_WindowToBackActive,   GA_Selected, Window_To_Back.State, MCYCLING_WINDOW);
  384. InitWindowGadget(GDX_WindowToBackClicks,   CYC_Active,  Window_To_Back.RequiredClicks-1, MCYCLING_WINDOW);
  385. InitWindowGadget(GDX_ScreenToBack_Check,   GA_Selected, Window_To_Back.Options & Opt_ScreenToBack, MCYCLING_WINDOW);
  386. InitWindowGadget(GDX_WindowToBackPattern,  STRINGA_TextVal, (LONG)Window_To_Back.ScreenPatternData.patstr, MCYCLING_WINDOW);
  387.  
  388. InitWindowGadget(GDX_ScreenCyclingActive,  GA_Selected, ScreenCycling.State, MCYCLING_WINDOW);
  389. InitWindowGadget(GDX_ScreenCyclingClicks,  CYC_Active,  ScreenCycling.RequiredClicks-1, MCYCLING_WINDOW);
  390. InitWindowGadget(GDX_ScreenCyclingPattern, STRINGA_TextVal, (LONG)ScreenCycling.ScreenPatternData.patstr, MCYCLING_WINDOW);
  391. }
  392.  
  393. /************************************************************************
  394. ********************  HANDLEMOUSECYCLINGRETURNID()  *********************
  395. *************************************************************************
  396. * Handle msgs arriving at mousecycling window - supply the ID returned by
  397. * BGUI. Returns either RET_OKAY or RET_QUIT.
  398. *
  399. *************************************************************************/
  400.  
  401. LONG HandleMouseCyclingReturnID(LONG id)
  402. {
  403. LONG    ret,num;
  404.  
  405. ret = RET_OKAY;
  406.  
  407. switch(id)
  408.         {
  409.         case GD_Return5:
  410.                 CloseMouseCyclingWindow();
  411.                 if (!ShowWindowID(ROOT_WINDOW))
  412.                         ret = RET_QUIT;
  413.                 break;
  414.  
  415.         /*******************/
  416.         /* Window To Front */
  417.         /*    Gadgets      */
  418.         /*******************/
  419.  
  420.         case GD_WindowToFrontActive:
  421.                 Window_To_Front.State ^= YKHK_ACTIVE;
  422.                 break;
  423.  
  424.         case GD_ScreenToFront_Check:
  425.                 Window_To_Front.Options ^= Opt_ScreenToFront;
  426.                 break;
  427.  
  428.         case GD_ExcludeWbWindow:
  429.                 Window_To_Front.Options ^= Opt_ExcludeWbWindow;
  430.                 break;
  431.  
  432.         case GD_WindowToFrontClicks:
  433.                 GetAttr(CYC_Active,CYC_WinToFrontClicks,(ULONG *)&num);
  434.                 Window_To_Front.RequiredClicks = num + 1;
  435.                 break;
  436.  
  437.         case GD_HotkeyWindowToFront:
  438.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  439.                                 &Window_To_Front,getString(WINDOW_TO_FRONT)))
  440.                         {
  441.                         PostError(getString(Couldnt_open_other_window_ERR));
  442.                         ret = RET_QUIT;
  443.                         }
  444.                 break;
  445.  
  446.         case GD_WindowToFrontPattern:
  447.                 NewPattern(GDX_WindowToFrontPattern, &Window_To_Front.ScreenPatternData,
  448.                         (struct Gadget *)STR_WinToFrontPat, MCYCLING_WINDOW);
  449.                 break;
  450.  
  451.         /******************/
  452.         /* Window To Back */
  453.         /*    Gadgets     */
  454.         /******************/
  455.  
  456.         case GD_WindowToBackActive:
  457.                 Window_To_Back.State ^= YKHK_ACTIVE;
  458.                 break;
  459.  
  460.         case GD_ScreenToBack_Check:
  461.                 Window_To_Back.Options ^= Opt_ScreenToBack;
  462.                 break;
  463.  
  464.         case GD_WindowToBackClicks:
  465.                 GetAttr(CYC_Active,CYC_WinToBackClicks,(ULONG *)&num);
  466.                 Window_To_Back.RequiredClicks = num + 1;
  467.                 break;
  468.  
  469.         case GD_HotkeyWindowToBack:
  470.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  471.                                 &Window_To_Back,getString(WINDOW_TO_BACK)))
  472.                         {
  473.                         PostError(getString(Couldnt_open_other_window_ERR));
  474.                         ret = RET_QUIT;
  475.                         }
  476.                 break;
  477.  
  478.         case GD_WindowToBackPattern:
  479.                 NewPattern(GDX_WindowToBackPattern, &Window_To_Back.ScreenPatternData,
  480.                         (struct Gadget *)STR_WinToBackPat, MCYCLING_WINDOW);
  481.                 break;
  482.  
  483.         /******************/
  484.         /* Screen Cycling */
  485.         /*    Gadgets     */
  486.         /******************/
  487.  
  488.         case GD_ScreenCyclingActive:
  489.                 ScreenCycling.State ^= YKHK_ACTIVE;
  490.                 break;
  491.  
  492.         case GD_ScreenCyclingClicks:
  493.                 GetAttr(CYC_Active,CYC_ScrCyclingClicks,(ULONG *)&num);
  494.                 ScreenCycling.RequiredClicks = num + 1;
  495.                 break;
  496.  
  497.         case GD_HotkeyScreenCycling:
  498.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  499.                                 &ScreenCycling,getString(SCREENS_CYCLING)))
  500.                         {
  501.                         PostError(getString(Couldnt_open_other_window_ERR));
  502.                         ret = RET_QUIT;
  503.                         }
  504.                 break;
  505.  
  506.         case GD_ScreenCyclingPattern:
  507.                 NewPattern(GDX_ScreenCyclingPattern, &ScreenCycling.ScreenPatternData,
  508.                         (struct Gadget *)STR_ScrCyclingPat, MCYCLING_WINDOW);
  509.                 break;
  510.  
  511.         default:
  512.                 break;
  513.         }
  514.  
  515. return(ret);
  516. }
  517.  
  518. /************************************************************************
  519. **********************  SHOWMOUSECYCLINGWINDOW()  ***********************
  520. *************************************************************************
  521. * Create and open the mousecycling window and initialize the gadgets to
  522. * reflect current settings. Sets up HandleReturnID function, curwin,
  523. * curwinobj and curwinID. Returns TRUE or FALSE to indicate success.
  524. *
  525. *************************************************************************/
  526.  
  527. BOOL ShowMouseCyclingWindow(void)
  528. {
  529. if (MouseCyclingWndObj = (Object *)CreateMouseCyclingWindow())
  530.         {
  531.         if (MouseCyclingWnd = WindowOpen(MouseCyclingWndObj))
  532.                 {
  533.                 InitMouseCyclingGadgets();
  534.                 HandleReturnID = HandleMouseCyclingReturnID;
  535.                 curwin = MouseCyclingWnd;
  536.                 curwinobj = MouseCyclingWndObj;
  537.                 curwinID = MCYCLING_WINDOW;
  538.                 return(TRUE);
  539.                 }
  540.         }
  541.  
  542. CloseMouseCyclingWindow();
  543. curwin = NULL;
  544. curwinobj = NULL;
  545. wndsigflag = 0L;
  546. appwinsigflag = 0L;
  547. return(FALSE);
  548. }
  549.  
  550.  
  551.